package pe.edu.upc.jtigers.svpn.service.implement;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.edu.upc.jtigers.svpn.aplication.excepcion.DAOExcepcion;
import pe.edu.upc.jtigers.svpn.domain.data.CompraDao;
import pe.edu.upc.jtigers.svpn.domain.model.Compra;
import pe.edu.upc.jtigers.svpn.domain.model.PlanNegocio;
import pe.edu.upc.jtigers.svpn.domain.service.CompraService;

@Service
public class CompraServiceImpl implements CompraService {

	@Autowired
	private CompraDao compraDao;

	@Override
	public Collection<PlanNegocio> listarCompras(int idEmprendedor) {
	  Collection<PlanNegocio> listaCompras = null;
	  try {
      listaCompras = compraDao.listarCompras(idEmprendedor);
    } catch (DAOExcepcion e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
		return listaCompras;
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public Compra registrarCompra(Compra compra) {
		try {
			compra.getEmprendedor().setIdUsuario(compra.getIdComprador());
			compra.getPlanNegocio().setIdPlanNegocio(compra.getIdPlan());
			compra = compraDao.registrarCompra(compra);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return compra;
	}

	@Override
	public Compra validaCompra(Compra compra) {
		try {
			compra = compraDao.validaCompra(compra);
			if (compra == null) {
				compra = new Compra();
			}
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return compra;
	}

	@Override
	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { DAOExcepcion.class })
	public Compra completaCompra(int id) {
		Compra compra = null;
		try {
			compra = compraDao.obtenerCompra(id);
			compra.setTransaccionCompleta(true);
			compraDao.registrarCompra(compra);
		} catch (DAOExcepcion e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return compra;
	}

}
